package org.mango.jiayin.operater.operater.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.mango.jiayin.operater.operater.Operater;

/**
 * <p>
 * Title: regexExists
 * </p>
 * <p>
 * Description: 正则查找算子 例如: regexExists('.*hello.*', key)-->判断data中的key是否有'hello'字段,有就返回
 * </p>
 *
 * @author ji'anyuan
 * @date 2018年3月10日
 */
public class RegexFindOp implements Operater {

  @Override
  public String getName() {
    return "regexFind";
  }

  @Override
  public Object calc(String[] opParames, Object data, Map<String, Object> nestValues) {
    Operater.checkParames(opParames, 2);

    Object[] values = Operater.getopParamesValues(opParames, data, nestValues);

    if (values[0] instanceof String && values[1] instanceof String) {
      List<String> result = new ArrayList<>();
      Pattern p = Pattern.compile((String) values[0]);
      Matcher m = p.matcher((String) values[1]);
      while (m.find()) {
        result.add(m.group());
      }
      return result.isEmpty() ? null : result.toArray();
    }

    return null;
  }
}
